import 'package:meta/meta.dart';
//https://www.jianshu.com/p/5d7e2dbdaea5

//第一步：添加依赖
/*第二步：创建State；
  状态是由reducer生成并储存在Store里面的。
  Store更新状态的时候，并不是更改原来的状态对象，而是直接将reducer生成的新的状态对象替换掉老的状态对象。
  所以，我们的状态应该是immutable的
 */
@immutable
class CountState {
  int _count = 0;

  get count => _count;

  CountState(this._count);

  CountState.initState() {
    _count = 0;
  }
}

/* 第三步：创建action
 * 定义操作该State的全部Action
 * 这里只有增加count一个动作
 */
enum Action { increment }

/* 第四步：创建reducer；
 * reducer是我们的状态生成器，它接收一个我们原来的状态，然后接收一个action，再匹配这个action生成一个新的状态
 * reducer会根据传进来的action生成新的CountState
 */
CountState reducer(CountState state, action) {
  //匹配Action
  if (action == Action.increment) {
    return CountState(state.count + 1);
  }
  return state;
}
